/**
 * @Title: package-info
 * @ProjectName java-base-learning
 * @Description: 装饰者模式
 * 特点:
 * 定义：在不改变原有对象的基础上，将功能附加到对象上
 * 提供了比继承更有弹性的替代方案（扩展原有对象的功能）
 * 适用场景：
 * 扩展一个类的功能，或者给类添加附加的职责
 * 动态的给一个对象添加功能，这些功能还可以动态的撤销
 * 优点：
 * 继承的有力补充，比继承更加灵活，在不改变原有的对象的基础上给对象扩展功能
 * 通过不同的装饰类或通过对这些类进行排列组合，可以实现不同的效果
 * 符合开闭原则
 * 缺点：
 * 会出现更多的类，更多的代码，增加程序的复杂性
 * 动态装饰时，多层装饰会更加复杂
 *
 * 相关设计模式：
 * 装饰模式和代理模式
 * 装饰模式和适配器模式
 * @author Merlin
 * @date 2019/3/610:39
 */
package com.design.merlin.decorationpattern;